home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-07-10 | 84.8 KB | 2,225 lines |
- *********************************************
- *********************************************
- Professional Development Series
- B U L L E T S
- *********************************************
- January 1993
- Volume 5, Number 1
- *********************************************
- *********************************************
-
-
- *********************************************
- *********************************************
- MAD'S COLUMN
- *********************************************
- *********************************************
-
- Hello and welcome to the January 1993 issue of Bullets!
-
- In past issues, I have touched on planned enhancements for
- developer support and developer programs. An exciting new
- enhancement you will soon be seeing in documents like the Novell
- Developers Guide is the SDK Grading System.
-
- What is this SDK Grading System, you ask? Quite often, I find a
- disparity between the implied maturity of an SDK and the needs of
- the developer community. The SDK Grading System is structured to
- eliminate the guesswork that is sometimes associated with SDKs.
-
- Some developers don't want to see an SDK unless it has been
- completely unit- and system-tested, with documentation either
- nicely bound or stored on a CD, and for which education classes and
- telephone support are available. Other developers are interested
- in an SDK at a very early stage, when the APIs are still forming,
- documentation is a less formal collection of header files and
- developer notes, and support is not yet provided.
-
- To produce the SDK Grading System, input (in the form of grades)
- is gathered from the various groups (Engineering, Documentation,
- Marketing, Education, Testing, Support, etc.). This input is then
- combined to determine an overall grade for each SDK. An SDK's
- "grade" may change over time. We hope that this process will help
- Novell's developers establish their expectations for SDKs.
-
- Happy_Programming!
-
- Mad Poarch
- Director
- Developer Support/Service
-
-
-
- *********************************************
- *********************************************
- ARTICLES:
- Getting Started with NetWare 4.0: Directoy Services
- *********************************************
- *********************************************
-
- With NetWare 4.0, Novell has introduced Directory Services to
- replace the traditional NetWare bindery employed by previous
- versions. NetWare 4.0 Directory Services provide many new features
- and capabilities. Directory Services functionality is provided
- through an extensive new Application Program Interface (API).
-
- This article presents a basic introduction to NetWare 4.0 Directory
- Services and is not intended to replace a thorough study of the
- documentation. It discusses several of the new features and
- advantages of Directory Services and offers a few tips and some
- general information to help you begin writing Directory Services
- applications more quickly. Converting existing applications from
- the bindery to Directory Services is also discussed. This article
- also includes example code that creates a Directory Services User
- class object to provide a starting point for using the Directory
- Services API.
-
-
- *********************************************
- Advantages of Directory Services
- *********************************************
-
- NetWare 4.0 Directory Services provides a hierarchical database
- architecture to store network information. This architecture,
- combined with advanced techniques for retrieving and storing
- database information, provides a very flexible environment for
- application development.
-
- One of the most beneficial Directory Services features is the
- network global scope of objects in the directory. An application
- with sufficient NetWare rights may retrieve information about any
- object in the directory without needing to be attached to any
- specific server. Access to a Directory Services object and its
- attribute information is limited solely by the access rights of the
- client, without regard to server connection status.
-
- Another very useful feature that is built into the Directory
- Services API is that changes made to the directory database are
- atomic. When an application makes changes to the directory
- database, each change is completely defined before the change to
- this database is attempted. When the change is actually made to the
- database, if any part of the operation fails, the entire operation
- fails. This makes it virtually impossible for partially defined
- objects to exist in the directory.
-
- With NetWare 4.0 Directory Services, no space is wasted in a
- directory database because no minimum size is defined for
- information describing objects and attributes. Objects are stored
- only once in the directory, reducing the overall size of the
- database.
-
- The hierarchical database structure of Directory Services design
- reduces network traffic and makes retrieving objects and attributes
- very easy and efficient. You need not search the entire database
- tree to locate an object; searching may be performed at any level
- of the tree. Enhanced searching techniques allow objects to be
- located in a variety of ways, such as using relational expressions
- and wild cards. Also, objects in the directory do not advertise.
- Network traffic is generated only when an application asks the
- directory for information.
-
- Finally, the entire NetWare 4.0 Directory Services Schema (the
- rules that define how the directory tree is constructed) may be
- modified and expanded by applications to suit specific needs. If
- the defined schema does not meet your needs, you may define an
- entirely new schema, or make modifications to parts of it. This
- feature adds greater flexibility to the NetWare 4.0 environment.
-
-
- *********************************************
- Developing Directory Services Applications
- *********************************************
-
- Developing Directory Services applications requires an
- understanding of concepts and ideas very different from the
- knowledge required to use the bindery. When you begin studying the
- manuals related to Directory Service applications, there are
- several things that you should keep in mind:
-
- * You do not need to understand everything about Directory
- Services to use the Directory Services API and begin writing
- applications.
-
- * Though writing directory applications may initially seem to
- be more complex than writing bindery applications, the
- directory is often easier to use.
-
- * Novell will continue to support all bindery APIs for some
- time, so you may continue to use bindery calls to perform
- operations until you are familiar with their directory
- equivalents. If you are already very familiar with the
- bindery, it may in some cases be easier to write a bindery
- application and then convert it to Directory Services.
-
-
- Context & Buffer Management
-
- Begin learning how to write applications for the directory by
- investigating the APIs for context and buffer management. Almost
- all Directory Services functions require a context handle and a
- buffer. The context handle provides information about the location
- in the directory of the object to be manipulated, while the buffer
- defines the operation that you want to perform. Creating a context
- handle may only be required once for the life of an application,
- but the creation and definition of buffers will probably be
- required for each individual operation performed in the directory.
- There are several APIs that you can use to manipulate contexts.
- NWDSCreateContext() and NWDSFreeContext() are the only two that you
- will need to begin writing applications. There are many APIs that
- create, manipulate, and free buffers. The functions NWDSAllocBuf(),
- NWDSInitBuf(), and NWDSFreeBuf() create and initialize buffers and
- are almost always required when performing directory operations.
- The NWDSPut...() and NWDSGet...() series of functions are used to
- store and retrieve information in the allocated buffers. You will
- use some arrangement of these calls to define the buffers which you
- will then use as parameters to other functions to perform directory
- operations. None of the buffering functions will change any
- information stored in the directory. These functions are used only
- to define the information required to perform operations. The
- directory database is not modified until a directory call is made.
-
- Once you are familiar with contexts and buffers, start making
- directory calls. Stay away from the more complex operations at
- first (such as defining new attributes or classes, manipulating
- access control lists, and creating partitions). Begin with some of
- the more straightforward operations, such as creating new objects
- and reading attribute information from existing objects.
-
- The functions NWDSAddObject(), NWDSRead(), NWDSSearch(),
- NWDSModifyObject(), and NWDSRemoveObject(), are sufficient to
- perform many useful directory operations while introducing you to
- the capabilities of the directory database.
-
- NWDSRead() and NWDSSearch() perform similar operations: NWDSRead()
- is used to get information about an object when you know the
- object's name, while NWDSSearch() is used to scan the entire
- directory for object names and return information about them.
- Remember that all of these functions except NWDSRemoveObject()
- require that the buffer initialization and manipulation functions
- be used to define the buffers necessary to make the directory call.
- NWDSRemoveObject() requires only the name of the object to be
- removed.
-
- Constant values (defined in the header file NWDSDEFS.H) are used
- in buffer management functions to specify which operation is
- desired. For example, the constant DSV_ADD_ENTRY is passed to
- NWDSInitBuf() to define a buffer to be used when adding a new
- object to the directory. NWDSAddObject() is called with the defined
- buffer to add the object. DSV_MODIFY_ENTRY would be passed to
- NWDSInitBuf() to define a buffer to be used to change an object's
- definition in the database. The actual change is performed by
- calling NWDSModifyObject() with the defined buffer.
-
- If attribute values (similar to property values in the bindery) are
- to be defined, NWDSPutAttrName() and NWDSPutAttrVal() are required
- to place the attribute names and values in the buffers. Attribute
- values may be defined when an object is created, or they may be
- added to existing objects by using NWDSModifyObject().
-
- To perform these types of operations, review the Directory Services
- Schema documentation to learn what attribute information is
- available with the various object classes. The User object class
- is a good place to begin, since it is a very common class and is
- used frequently by the NetWare 4.0 directory. In the directory, the
- User object class is analogous to the OT_USER bindery object type
- in the bindery, so this class is probably a familiar place to
- start.
-
-
- Client & Server Considerations
-
- There is very little distinction between the server and client
- environments when writing applications that use directory services.
- The only difference is that, when writing client applications, you
- must initialize the Unicode tables by calling the
- NWDSInitUnicodeTables() function before calling any Directory
- Services functions. The required Unicode files are provided with
- NetWare. Consult the documentation to determine where these files
- must be located to ensure that applications can find them during
- the initialization process.
-
- The Directory Services header files use the constant value NLM to
- differentiate between server and client applications. You may also
- use this constant to compile conditionally for the two
- environments, making it unnecessary to have two versions of the
- source code.
-
- Compilation in the two environments requires the use of several new
- header files that support the Directory Services APIs. For linking,
- there is a new import file for NLMs and there are new libraries for
- client applications. NLMs should include the DSAPI.IMP import file
- when linking, and client applications should include the NWNET.LIB,
- NWCALLS.LIB, and NWLOCALE.LIB libraries.
-
-
- *********************************************
- Converting Bindery-Based Apps
- to Directory Services
- *********************************************
-
- After becoming familiar with some of the basic Directory Services
- APIs, converting a bindery application to use Directory Services
- is fairly easy. Although there is no "one-to-one" correspondence
- between bindery and directory functions, the subset of directory
- functions that replace the functionality of the bindery is
- relatively small. When you learn to use the functions required to
- control and access objects and attributes in the directory, you
- understand the majority of the functions needed to convert a
- bindery-based application to run in the Directory Services
- environment.
-
- Since the bindery functions will still be supported for some time,
- you do not need to convert your entire application to Directory
- Services at once. It is possible (and in some cases desirable) for
- applications to use a combination of directory and bindery
- functions. During the gradual transition from bindery networks to
- directory networks, your applications may even need to operate in
- both environments.
-
- The most important part of the process of converting to the
- directory is determining which directory functions provide the
- greatest benefit to your application and implementing those
- functions first. You must then decide which bindery functions your
- application should continue to use in order to maintain backward
- compatibility with previous versions of NetWare. The two sets of
- functionality can exist in harmony, but you should upgrade all of
- your bindery functions to the directory as time permits, leaving
- only those bindery functions that your application requires to
- support previous versions of NetWare. Figure 1 below contains
- several examples of common bindery functions and directory
- functions that perform similar operations.
-
- *********************************************
- Figure 1: Common bindery functions and
- associated directory functions
-
- Bindery Function Directory Services Function
- =============================================================
- CreateBinderyObject() NWDSAddObject()
- -------------------------------------------------------------
- DeleteBinderyObject() NWDSRemoveObject()
- -------------------------------------------------------------
- ReadPropertyValue() NWDSRead, NWDSSearch()
- -------------------------------------------------------------
- ScanBinderyObject() NWDSRead, NWDSSearch()
- -------------------------------------------------------------
- ScanProperty() NWDSRead, NWDSSearch()
- -------------------------------------------------------------
- WritePropertyValue() NWDSModifyObject()
- -------------------------------------------------------------
-
- END of FIGURE 1
- *********************************************
-
- Several bindery functions are replaced by NWDSRead() and
- NWDSSearch(). This is made possible by the buffer management
- concept used by directory functions. The definition of the buffer
- controls how an operation will be performed in the directory. Then,
- after a buffer is correctly defined, making the directory function
- call to perform the operation is very straightforward. If an
- operation fails, it is most likely due to an incorrect buffer
- definition. This can usually be caught before the directory call
- is made by checking the return codes from the buffering functions,
- but this is not always the case.
-
- The buffering functions themselves do not affect the directory
- database. The buffering functions check for proper syntax when
- creating the buffers, but they have no knowledge of what
- information exists in the directory. For example, if you define a
- buffer that includes attribute information, the buffering functions
- will check to ensure that the attribute names and values are
- specified in the proper format. However, if you misspell an
- attribute name, no error will occur until the directory call is
- actually made. If you get an error code from a directory function,
- correcting it will probably require changing one of the buffering
- function calls, not the directory call.
-
-
- Example Code
-
- The example code in Figure 2 below illustrates one of the most
- common directory service operations: creating a new directory
- object of the User class.
-
- *********************************************
- Figure 2: Creating a new "User" directory object
-
- #define LOGIN_NAME "Admin"
- #define PASSWORD ""
- #define OBJECT_NAME "Example User Object"
- #define SURNAME "Example Surname"
-
- #define ESUCCESS 0
-
- #include <stdio.h>
- #include <stdlib.h>
-
- #include <nwnet.h>
-
- NWDSContextHandle Context;
-
- int ExampleCreateDSObject( char *objectName, char *surName )
- {
- int ccode;
- int32 interationHandle;
- Buf_T *attributes;
-
- ccode = NWDSAllocBuf(DEFAULT_MESSAGE_LEN, &attributes);
- if(ccode < ESUCCESS)
- return ccode;
-
- ccode = NWDSInitBuf(Context, DSV_ADD_ENTRY, attributes);
- if(ccode < ESUCCESS)
- goto freeBuffers;
-
- ccode = NWDSPutAttrName(Context, attributes, A_OBJECT_CLASS);
- if(ccode < ESUCCESS)
- goto freeBuffers;
- ccode = NWDSPutAttrVal(Context, attributes,
- SYN_CLASS_NAME, A_USER);
- if(ccode < ESUCCESS)
- goto freeBuffers;
-
- ccode = NWDSPutAttrName(Context, attributes, A_SURNAME);
- if(ccode < ESUCCESS)
- goto freeBuffers;
- ccode = NWDSPutAttrVal(Context, attributes,
- SYN_CI_STRING, surName);
- if(ccode < ESUCCESS)
- goto freeBuffers;
-
-
- interationHandle = NO_MORE_ITERATIONS;
- ccode = NWDSAddObject(Context, objectName, &interationHandle,
- FALSE, attributes);
-
- freeBuffers:
- NWDSFreeBuf(attributes);
- return ccode;
- }
-
- void main( void )
- {
- int ccode;
-
- #ifndef NLM
- ccode = NWInitUnicodeTables(001, 437);
- if(ccode < ESUCCESS)
- {
- printf("NWDSInitUnicodeTables returned %d\n", ccode);
- exit(1);
- }
- #endif
-
- Context = NWDSCreateContext();
- if((long)Context < ESUCCESS)
- {
- printf("NWDSCreateContext returned %d\n", (int)Context);
- exit(1);
- }
-
- ccode = NWDSLogin(Context, 0, LOGIN_NAME, PASSWORD, 0);
- if(ccode)
- {
- NWDSFreeContext(Context);
- printf("NWDSLogin returned %d\n", ccode);
- exit(1);
- }
-
- ccode = ExampleCreateDSObject(OBJECT_NAME, SURNAME);
- printf("AddNWDSObject returned %d\n", ccode);
-
- NWDSLogout(Context);
- NWDSFreeContext(Context);
- }
-
- END of FIGURE 2
- *********************************************
-
- The mainline performs several operations that are required in most
- directory applications:
-
- * Initializing the Unicode tables,
- * Creating a context,
- * Logging in, and
- * Freeing all of these resources after the directory operations
- are complete.
-
- Notice that the "#ifndef" operator is used for conditional
- compilation of the NWDSInitUnicodeTables() function call. The
- example code creates a global context handle that is used
- throughout the rest of the program. A login is necessary (using
- NWDSLogin()) to obtain the required access rights for creating
- objects. Some functions (e.g., functions that read and search
- directory information) do not require the application to be logged
- in to the directory, since some objects allow access to read their
- attributes with no restrictions. For example, no login is required
- to read the Network Address attribute of a server when the name of
- the server object is known.
-
- ExampleCreateDSObject() provides examples of buffer creation and
- initialization. Buffer manipulation functions put into the buffer
- the information required to define the object to be created. The
- buffer is initialized with the DSV_ADD_ENTRY constant, since a new
- object is being added. The only attribute information that must be
- placed in the buffer is for the mandatory attributes Object Class
- and Surname. The Common Name is also a mandatory attribute, but
- this name is supplied as one of the parameters (objectName) to
- NWDSAddObject().
-
- The NWDSAddObject() call uses the information defined in the buffer
- to add the object to the directory database. Remember that if any
- part of the add operation fails (for example, if one of the
- attribute names is undefined), the entire operation will fail and
- the object will not be created.
-
- As you make changes to the directory database, you will begin to
- notice a pattern of function calls that is repeated for most
- operations. The table in Figure 3 lists the basic steps required
- to accomplish most directory database operations and each
- operation's corresponding functions.
-
- *********************************************
- Figure 3: Steps required for directory database operations & each
- operation's corresponding function calls
-
- Operation Directory Function Call
- =============================================================
- Initialize the Unicode tables NWDSInitUnicodeTables()
- (client applications only)
- -------------------------------------------------------------
- Create context NWDSCreateContext()
- -------------------------------------------------------------
- Login NWDSLogin()
- -------------------------------------------------------------
- Allocate buffers NWDSAllocBuf()
- -------------------------------------------------------------
- Initialize buffers NWDSInitBuf()
- -------------------------------------------------------------
- Define buffers NWDSPut...()
- -------------------------------------------------------------
- Perform the Directory Operation NWDSAddObject()
- NWDSModifyObject()
- ...
- -------------------------------------------------------------
- Retrieve buffer information NWDSGet...()
- -------------------------------------------------------------
- Free buffers NWDSFreeBuf()
- -------------------------------------------------------------
- Logout NWDSLogout()
- -------------------------------------------------------------
- Free context NWDSFreeContext()
- -------------------------------------------------------------
-
- END of FIGURE 3
- *********************************************
-
- These steps are not absolute; depending on the operation, more,
- fewer, or different steps may be required. This is just a general
- outline you can use as a starting point.
-
- NetWare 4.0 Directory Services offers new features and advantages
- that make developing in a network environment easier and more
- flexible. Writing applications that take advantage of the directory
- requires careful planning, but the advantages are well worth the
- effort. Converting existing bindery-based applications to Directory
- Services gives applications greater flexibility, especially while
- hybrid bindery-and-directory networks exist that allow applications
- to be converted to the directory in stages. Once you are familiar
- with the directory, you will find that the capabilities provided
- by NetWare 4.0 Directory Services make NetWare applications
- development an even more rewarding and profitable endeavor.
-
-
- You can gain access to the Directory Services API through the NLM
- SDK for NetWare 4.0 and the NetWare Client SDK. You must be a
- member of a Novell Developers' Program to purchase these SDKs. For
- more information on these SDKs and the Novell Professional
- Developers' Program, call 1-800-NETWARE or 1-801-429-5588 (in the
- U.S. and Canada), or contact your local international Novell
- office.
-
-
-
- *********************************************
- *********************************************
- TECHNICAL INSIGHTS:
- Creating Btrieve Quick Libraries for Visual Basic for DOS
- (Btrieve (all versions))
- *********************************************
- *********************************************
-
- When developing Btrieve applications using the Microsoft Visual
- Basic for DOS interpreter environment (VBDOS), you must create a
- Quick Library that includes the required Btrieve interface. To
- create this Quick Library, use the following link command:
-
- Link /q BC7RBTRV.OBJ, BC7.QLB,, VBDOSQLB.LIB;
-
- where BC7RBTRV.OBJ is the Btrieve interface, BC7.QLB is the name
- of the Quick Library, and VBDOSQLB.LIB is the name of the required
- library. To load the Visual Basic for DOS environment to include
- the newly created Quick Library execute the following command:
-
- VBDOS /L BC7
-
-
-
- *********************************************
- *********************************************
- TECHNICAL INSIGHTS:
- Header File Inconsistencies
- (NetWare C Interface for DOS v1.2)
- *********************************************
- *********************************************
-
- In DIAG.H, the fields, linkAddress and ESRAddress, in the ECB
- structure are defined as an array of WORD. In NXT.H, linkAddress
- and ESRAddress are defined as far pointers. These inconsistent ECB
- structure definitions can cause some problems if an ESR is defined
- in your application and the include file DIAG.H exists before
- NXT.H.
-
- To resolve this inconsistency, either avoid including DIAG.H before
- NXT.H in applications that make IPX calls, or modify the
- linkAddress and ESRAddress fields in DIAG.H as follows:
-
- void far *linkAddress;
- void (far *) ();
-
- The above definition should be included for applications that do
- not use ESR routines.
-
-
-
- *********************************************
- *********************************************
- TECHNICAL INSIGHTS:
- Borland's Default open() Mode
- (NetWare C Interface for DOS v1.2)
- *********************************************
- *********************************************
-
- After writing to a file through the Queue Services API, extra 0x0D
- (Carriage Return) characters may be left in the file. These extra
- characters remain because the Queue Services API assumes that the
- file will be open in Binary mode. For example, in the SERVJOB.C
- module, open() is called without specifying the mode in which the
- file should be open. If Borland's C++ v3.1 compiler is used to open
- the file, it defaults to text filtering which causes some extra
- characters to appear in the file.
-
- To prevent the introduction of these extra 0x0D characters, change
- Borland's default open() mode by including the following lines in
- your code:
-
- extern int _fmode;
-
- _fmode = O_BINARY;
-
-
-
- *********************************************
- *********************************************
- TECHNICAL INSIGHTS:
- New Status Codes for NetWare SQL v3.0
- (NetWare SQL v3.0)
- *********************************************
- *********************************************
-
- Several status codes have been added to NetWare SQL since the
- release of version 3.0. These status codes are not documented in
- NetWare SQL Status Codes and Messages (Jan. 1992 ed.).
-
- 350 Security is not enabled on dictionary
-
- You have attempted to perform an operation that can only be
- done when security is enabled. Database security is not
- enabled at this time.
-
- 351 Transaction is not started yet
-
- You must start a transaction before performing a COMMIT or
- ROLLBACK operation.
-
- 886 Incorrect Btrieve file version for this operation
-
- Referential integrity constraints can only be defined on
- Btrieve file versions 6.0 or later. If you wish to add
- referential integrity to this file, use BREBUILD to convert
- it to the v6.0 file format.
-
- 887 CREATE TABLE statement cannot reference the same table more
- than once
-
- This status code is returned in place of 568; status code 568
- is not actually used. For more details, check the NetWare SQL
- Status Codes and Messages manual under "status code 568."
-
- 888 A primary key is already defined on this table
-
- A table may contain only one primary key and you have
- attempted to define a second primary key on this table.
-
-
-
- *********************************************
- *********************************************
- TECHNICAL INSIGHTS:
- Must Scan Salvagable Files Before Purging
- (NetWare C Interface for DOS v1.2)
- *********************************************
- *********************************************
-
- The NetWare C Interface for DOS v1.2 documentation incorrectly
- states that an initial search can be performed by setting entryID
- to "-1." Setting the entryID parameter in PurgeSalvagableFile() to
- "-1" as suggested in the documentation always causes it to fail.
- PurgeSalvagableFile() cannot scan for files to be purged.
-
- You must call ScanSalvagableFiles() to get a valid entryID value
- before calling PurgeSalvagableFile(). This entryID will allow
- PurgeSalvagableFile() to identify the directory entry to be purged.
-
-
-
- *********************************************
- *********************************************
- TECHNICAL INSIGHTS:
- readdir API Returns Invalid Date/Time
- (Network C for NLMs v2.0(d))
- *********************************************
- *********************************************
-
- The readdir API is returning date/time fields in a format that is
- similar to the DOS date/time format, but not identical. Differences
- between the formats cause SetFileInfo() to set the time and date
- information incorrectly if the fields are passed directly from
- readdir().
-
- The documentation states that dates should be stored in DOS format
- for SetFileInfo(). However, to accomplish this, the dates/times
- returned from readdir() must be modified. The four-byte date/time
- value must have the two WORDs, "AA BB" and "CC DD," swapped, but
- the WORDs themselves should not be swapped. For example,
-
- AA BB CC DD
-
- needs to be stored as
-
- CC DD AA BB
-
- Simply using LongSwap does not resolve this situation, since
- LongSwap also swaps the values within the WORDS as well. To ensure
- that date/ time values are set properly, swap only the location of
- the two WORD values. Figure 4 contains an example that assumes the
- receiving fields have been defined as character arrays.
-
- *********************************************
- Figure 4: Example of Date/Time format change
-
- *(WORD *)lastUpdateDateAndTime = dirP->d_date;
- *(WORD *)&lastUpdateDateAndTime[2] = dirP->d_time;
-
- *(WORD *)creationDateAndTime = ((WORD *)(&dirP->d_cdatetime))[1];
- *(WORD *)&creationDateAndTime[2] = ((WORD *)(&dirP->d_cdatetime))[0];
-
- *(WORD *)lastAccessDate = ((WORD *)(&dirP->d_adatetime))[1];
-
- *(WORD *)lastArchiveDateAndTime = ((WORD *)(&dirP->d_bdatetime))[1];
- *(WORD *)&lastArchiveDateAndTime[2] = ((WORD *)(&dirP->d_bdatetime))[0];
-
- END of FIGURE 4
- *********************************************
-
-
-
- *********************************************
- *********************************************
- TECHNICAL INSIGHTS:
- Printing Through Xtrieve PLUS - Tabloid Setting Correction
- (Xtrieve PLUS v4.11)
- *********************************************
- *********************************************
-
- In the XTRIEVE.PDB file that ships with NetWare SQL v3.0, the
- TABLOID setting is set to EPSON LQ-1500/2.0, rather than IBM PC
- Graphics printer. To change the TABLOID setting to IBM PC Graphics
- printer, the printer information needs to be altered as follows:
-
- * At the DOS prompt type
-
- "SLATE XTRIEVE.PDB"
-
- * Select "Add/Edit Devices (Ptr Connections)"
- - Select "3001 Tabloid" <Press ENTER>
- - Tab to "Ptr Mfg"
- - Press F9 [Lists]
- - Select "IBM" <Press ENTER>
- - Tab to "Ptr Type"
- - Press F9 [Lists]
- - Select "PC Graphics Printer" <Press ENTER>
-
- * Press F10 [Prev Screen]
- Press F10 [Prev Screen]
- Press F10 [Exit]
-
-
-
- *********************************************
- *********************************************
- TECHNICAL INSIGHTS:
- MapDrive() and Windows
- (NetWare C Interface for Windows v1.3)
- *********************************************
- *********************************************
-
- The Windows MapDrive() function can only modify an existing search
- drive, it cannot add a new one. In order to add a search drive
- under Windows, a dummy search drive is required before bringing up
- Windows. Then, this search mapping can be modified using
- MapDrive().
-
-
-
- *********************************************
- *********************************************
- TECHNICAL INSIGHTS:
- Get Next Extended Operation after Get Key
- (NetWare Btrieve v5.15, Btrieve for DOS v5.10a)
- *********************************************
- *********************************************
-
- If you use the GetKey bias (+50) when establishing positioning
- before a Get Next Extended (38) operation, the extended operation
- will not function properly, returning either a status 19
- (Unrecoverable Error) or erroneous information in the databuffer.
- This situation occurs with Btrieve for DOS v5.10a and NetWare
- Btrieve v5.15.
-
- Patch #57, available on Novell's NetWire forum on CompuServe
- (NOVLIB, LIB 7), resolves the situation for NetWare Btrieve v5.15.
- There is currently no patch for Btrieve for DOS v5.10a, so avoid
- using the GetKey bias before Get Next Extended operations. Instead,
- use a Get First (12), Get Equal (5), or some other operation to
- establish positioning without the +50 bias.
-
-
-
- *********************************************
- *********************************************
- TECHNICAL INSIGHTS:
- NetWare Btrieve & New Intel NE3200 Driver
- (NetWare Btrieve (NLM) v5.15)
- *********************************************
- *********************************************
-
- File corruption can occur when you use Intel's NE3200.COM driver
- (09-03-91, 19242 bytes) in conjunction with Intel's EtherExpress
- 32bit card on workstations running Btrieve applications. Intel
- describes the situation as:
-
- "... a problem with the Ether-Express 32 and applications that
- use extended memory or memory managers (i.e. MicroSoft Windows
- 3.x). Previous versions of this driver would not protect
- memory regions from the above mentioned applications. This
- could cause files that the EtherExpress 32 stored in memory
- to be overwritten (corrupted) if an application wrote to that
- address space."
-
- Intel has a new NE3200.COM driver (date: 05-04-92, size: 25967)
- which fixes these problems through the use of the keyword "DOUBLE
- BUFFER" in the NET.CFG file. This driver is still in Beta and has
- not completed certification. This driver defaults to an 802.2 frame
- type; if you need a different frame type, include a "FRAME"
- statement in the NET.CFG file. Figure 5 contains a sample NET.CFG
- file. Note that this file requires the NE3200.COM driver to be in
- the same directory as itself.
-
- *********************************************
- Figure 5: Sample NET.CFG file for NE3200.COM driver
-
- LINK DRIVER NE3200
- SLOT 5
- DOUBLE BUFFER
- FRAME ETHERNET_802.3
- PROTOCOL IPX 0 ETHERNET_802.3
- PROTOCOL IPX
- BIND NE3200
-
- END of FIGURE 5
- *********************************************
-
-
-
-
- *********************************************
- *********************************************
- TECHNICAL INSIGHTS:
- Substitution Variables & NetWare SQL Inserts
- (NetWare SQL v3.0a)
- *********************************************
- *********************************************
-
- When inserting records through a substitution variable, if the data
- being inserted contains the "@" character, all subsequent inserts
- with the same cursor are given the same data for that field.
- NetWare SQL is confusing the "@" in the data with a substitution
- variable indicator.
-
- *********************************************
- Figure 6: NetWare SQL inserts resulting in incorrect field data
-
- XQLCompile of "INSERT INTO Patients (ID, First^Name, Last^Name, Address)
- VALUES (@V1, @V2, @V3, @V4)"
- XQLSubst where
- V1 = "A11111" V2 = "John" V3 = "Smith" V4 = "100 Main @ 1st"
- XQLExec (performs Insert successfully)
- XQLSubst where
- V1 = "B22222" V2 = "Mary" V3 = "Brown" V4 = "222 Central Ave."
- XQLExec (performs Insert successfully)
-
- END of FIGURE 6
- *********************************************
-
- For example, in Figure 6, the second insert (and all subsequent
- inserts based on the same XQLCompile command) will result in each
- record being inserted with the same address as the first record:
- "100 Main @ 1st".
-
- This occurs with any application making the above calls, and when
- using the Load option of the NetWare SQL Maintenance Utility
- (NSUTIL.EXE and NSUTIL.NLM), since it uses these calls. With
- NSUTIL, the problem will occur in each file format: SDF, UNF, DIF
- or ASC.
-
- To resolve the situation and ensure that each record is inserted
- with the correct address, upgrade to the latest release of NetWare
- SQL, version 3.0b (avail. Dec. 92). To obtain v3.0b, download
- SQL30.ZIP form the NOVLIB forum on CompuServe, or contact Novell
- Developer Support (see "Contacting Novell," page 11). Otherwise,
- the only work-around is to recompile the statement between
- XQLSubst/XQLExec calls, or append the actual data values into the
- Insert statement passed in on the XQLCompile command, instead of
- using the substitution variables.
-
-
-
- *********************************************
- *********************************************
- TECHNICAL INSIGHTS:
- Unique Passwords
- (NetWare v3.11)
- *********************************************
- *********************************************
-
- If the "Unique Passwords" requirement is enabled through SYSCON,
- and a password is changed to one of the old passwords through
- SYSCON, the password is accepted and no error messages are
- returned.
-
- Whenever you change a password through SYSCON, the password
- expiration date defaults to January 1, 1985. Unless you change this
- expiration date to a date later than the current date, SYSCON will
- accept any passwords that were used previously even though the
- "Unique Passwords" restriction is on. Therefore, make sure that the
- password expiration date is valid.
-
-
-
- *********************************************
- *********************************************
- TECHNICAL INSIGHTS:
- Determining If Data Dictionary Files are Corrupted
- (Xtrieve PLUS v4.1x)
- *********************************************
- *********************************************
-
- When you attempt to add fields to a view and when recalling views,
- if the .DDF files are damaged, Xtrieve PLUS v4.1x returns status
- 207 (Field Does Not Exist in Dictionary) or status 240 (Field in
- the View Definition Is Not in the Active Dictionary).
-
- In the Xtrieve PLUS User's Manual (for DOS and OS2), Appendix D
- lists Dictionary Structures for all of the .DDF files. With Xtrieve
- PLUS for NetWare SQL, the Dictionary Structures are shown in
- Appendix C. Each description lists the field and index names for
- each .DDF file. Specifics are given for field data types and sizes,
- and key flags, such as duplicates, case sensitivity, and segments.
-
- To view the .DDF file definitions in Xtrieve PLUS, the CONFIGURE/
- SWITCHES/DICTIONARY option must be set to "YES." Then, the .DDF
- file definitions can be viewed through the DICTIONARY/SHOW option.
- To resolve this situation, use VIEW/FILE to compare the field and
- index information described by the user's manual for the .DDF files
- with the set of .DDF files you are using. A comparison should be
- made of the field and index information. If any of the information
- does not match exactly, then the .DDF files are probably corrupted.
-
- One more thing to note is that if a Btrieve BUTIL -STAT is executed
- on the DDF files, the results may not match the dictionary file
- definitions viewed in Xtrieve if the files are corrupted.
-
- .DDF files created with NetWare SQL will have a supplemental index
- defined for X$Field (FIELD.DDF), but this is only shown in the
- NetWare SQL Developer's Kit Getting Started manual which shipped
- with NetWare SQL 3.0. This fourth supplemental index is not shown
- in the Xtrieve PLUS User's Manuals, and is only defined if the
- dictionaries were created with NetWare SQL.
-
- To recover corrupted data dictionary files, use MAKE_XTA to extract
- each file definition. Then, use XCFP to create a command file to
- rebuild each file. This process can be partially automated by
- performing the following steps:
-
- 1. Using XQLI or any other SQL statement processor, execute
- the following statement to extract the file names from
- the dictionary files and save the output to an ASCII
- file:
-
- SELECT Xe$Name FROM X$File
- (to extract file definition names)
-
- Then, edit the ASCII file so that it does not contain any
- of the dictionary file names (X$File, X$Field, etc.)
-
- 2. Edit the ASCII file so that each file definition is
- recoverable using MAKE_XTA and XCFP as follows: The
- result from the SELECT statement above was:
-
- FILEDEF1
- FILEDEF2
- FILEDEF3
-
- Next, edit the ASCII file to look like this (you may have
- to cut and paste quite a bit, but it's worth it if you
- have many files):
-
- MAKE_XTA /F:"FILEDEF1"
- XCFP MAKE_XTA.XTA FILECMD1
- MAKE_XTA /F:"FILEDEF2"
- XCFP MAKE_XTA.XTA FILECMD2
- MAKE_XTA /F:"FILEDEF3"
- XCFP MAKE_XTA.XTA FILECMD3
-
- Then, rename the resulting ASCII file with a .BAT
- extension.
-
- 3. Create a new set of .DDF files in another directory using
- the Xtrieve PLUS DICTIONARY/CREATE option.
-
- 4. Run the batch file in the directory with the corrupted
- .DDF files. It will create command files, with a .XTC
- extension, which can be played back against the new .DDF
- files created in Step 3.
-
- 5. To recover view definitions, repeat Step 1 with the
- following statement:
-
- SELECT Xv$Name FROM X$View
-
- Then, repeat Step 2 using the result from the SELECT
- statement, editing the ASCII file as follows:
-
- MAKE_XTA /V:"viewname"
- XCFP MAKE_XTA.XTA VIEWCMD1
- .
- .
- .
-
- Finally, repeat Step 4.
-
-
-
- *********************************************
- *********************************************
- TECHNICAL INSIGHTS:
- Prototype Missing from CLib
- (Network C for NLMs SDK v2.0(e))
- *********************************************
- *********************************************
-
- In the Network C for NLMs SDK, the ioctl() prototype is missing
- from the header files of CLIB.NLM v.3.11 b. This generates a
- warning message from the compiler. For now, you can safely ignore
- this warning message. The prototype will be included in a later
- release.
-
-
-
- *********************************************
- *********************************************
- TECHNICAL INSIGHTS:
- Create/Drop Index Operations within a Transaction
- (NetWare SQL v3.0)
- *********************************************
- *********************************************
-
- With NetWare SQL, if an application performs a Create Index or Drop
- Index operation on a table within a transaction after it has
- previously updated the same table within the same transaction, the
- updates will be committed when the Create Index or Drop Index
- operation completes. The updates cannot be rolled-back, even though
- the application has not yet issued the COMMIT/ROLLBACK statement.
-
- This anomaly occurs because NetWare SQL must temporarily disable
- transactions to Btrieve in order to perform the Btrieve Create
- Index or Drop Index operation. When this operation is complete, all
- outstanding updates to the file are committed.
-
- In general, applications should not mix DDL (Data Definition
- Language) operations like Create Index or Drop Index and data
- updates within a single transaction.
-
-
-
- *********************************************
- *********************************************
- NIBBLES & BITS
- Fast answers to common questions
- *********************************************
- *********************************************
-
- *********************************************
- NetWare C Interface for DOS
- *********************************************
-
- Q: When I am running IPXODI v2.0, GetServerAddressTable() and
- GetServerNameTable() return empty information buffers. The
- exact same calls function properly under IPXODI v1.2. What
- should I do?
-
- A: This situation is the result of a known problem with IPXODI
- v2.0 that will be fixed in the next release. Until then, if
- you need to use these calls, use IPXODI v1.2.
-
-
- Q: The documentation for the NetWare C Interface for DOS for
- BroadcastToConsole(), CloseMessagePipe(), and
- GetBroadcastMessage() shows an error code "253 (0xFC)
- MESSAGE_QUEUE_FULL". However, decimal "253" does not equal hex
- "FC."
-
- A: The hex value is correct. The decimal value should be "252."
-
-
- TIP: The ScanDirEntry() And ScanFileEntry() calls do not return the
- originating/owning namespace of a file or directory entry. To
- return this information, substitute the NetWare v3.x system
- call ObtainFileOrSubdirectoryInformation() using the F2
- interface. For example code demonstrating this call, contact
- the Developer Support Group.
-
-
- *********************************************
- NetWare C Interface for Windows
- *********************************************
-
- Q: Is it possible to login and logout of a NetWare server from
- a Windows 3.1 DOS box?
-
- A: In order to log in and out of a NetWare server multiple times
- from a DOS window, several conditions must be satisfied:
-
- 1. The shell (IPX/ODI and NETX) must be loaded prior to
- starting Windows.
-
- 2. VIPX.386 should be version 1.13 or later.
-
- 3. Set NWShareHandles = TRUE to share drive mappings among
- DOS sessions. This parameter is in the [NetWare] section
- of the Windows SYSTEM.INI file.
-
- 4. A path must be maintained to the \LOGIN subdirectory of
- a NetWare server.
-
-
- Q: When programming under Windows v3.1 using the NetWare C
- Interface for Windows SDK v1.3, the error message,
- "SPX_NOT_INSTALLED," may be returned when calling the function
- SPXInitialize(). Similarly, the error message, "IPX_NOT_
- INSTALLED," may be returned when calling IPXInitialize().
-
- A: To prevent these error conditions, make certain that you are
- using the appropriate versions of the following files:
-
- * IPX.COM v3.10 and above or IPXODI.COM v 1.20 & above
-
- * VIPX.386 v 1.13 and above
-
- * NWIPXSPX.DLL v1.31 and up
-
-
- *********************************************
- NetWare Client SDK
- *********************************************
-
- Q: Working with the NetWare v4.0 Client SDK, the NWCalls DOS
- Client Calls don't seem to function. Am I forgetting
- something?
-
- A: The NWCalls APIs require a call to NWCallsInit() before they
- will function properly. NWCallsInit() initializes the double
- byte tables, as well as other lower-level interface functions.
-
-
- *********************************************
- NLM SDK for NetWare v4.0
- *********************************************
-
- Q: How can I make my NLM's screen look like a standard Novell NLM
- screen?
-
- A: Use the NWSNut libraries that are included with the NLM SDK
- for NetWare v4.0.
-
-
- *********************************************
- WATCOM C/386
- *********************************************
-
- Q: I am using WATCOM C/386 v9.0 and the WLINK linker will not
- export symbols from my NLM. What should I do?
-
- A: Patch the v9.0 linker up to 9.01d, to fix this problem.
- Patches for WATCOM C/386 are available from WATCOM's BBS at
- 519-884-2103.
-
-
- *********************************************
- Network C for NLMs
- *********************************************
-
- TIP: In the Network C for NLMs v2.0(d) documentation, the example
- for AIOAcquirePort() passes the hardwareType, boardNumber, and
- portNumber as integers. However, doing so can result in a
- server abend. To fix the example, pass the hardwareType,
- boardNumber and portNumber in as pointers to integers.
-
-
- *********************************************
- NetWare Btrieve
- *********************************************
-
- TIP: The new NetWare Btrieve v6.0 operation 42, to control
- Continuous Operations on a Btrieve file, can only be called
- from an NLM application, and not from a workstation
- application.
-
-
- Q: How can I create Data Definition Files (.DDF) files to work
- with third-party products that requires them?
-
- A: You can obtain these .DDf file in two ways:
-
- * The software company who sold the product should be able
- to provide the .DDF with their software.
-
- * Use Xtrieve PLUS, XQL or NetWare SQL to create the .DDF
- files.
-
-
-
- *********************************************
- *********************************************
- NOVELL DEVELOPER RELATIONS
- A special supplement to Novell's
- Professional Development Series BULLETS
- *********************************************
- *********************************************
-
- *********************************************
- Bundle Up for 1993
- *********************************************
-
- You've probably already purchased some warm-weather gear, but have
- you purchased the development tools you'll need to make it through
- the winter?
-
- Since your development efforts sometimes require more than one
- Novell development tool as well as other Novell products, Novell
- has designed development tool bundles. These bundles provide you
- with everything you need to develop specific types of applications
- for the NetWare platform, including tools and comprehensive
- documentation that explains how the components of the bundle work
- together, installation, service and support, and licensing issues.
-
- Tool bundles are especially useful for new developers or developers
- new to a particular type of application development. After
- purchasing a single tool bundle, you can begin developing your
- application immediately.
-
- Tool bundles are currently available for network management,
- NetWare 4.0 client/server application development, and distributed
- desktop application development using Novell's TCP/IP protocol. The
- specific bundles offered are:
-
- * LAN WorkShop
- * NetWare 4.0 tool bundle
- * NetWare Management System tool bundle
-
-
- LAN WorkShop
-
- With the LAN WorkShop, Novell consolidates its TCP/IP
- development tools into one package. This bundle includes:
-
- * LAN WorkPlace for DOS Toolkit
- * LAN WorkPlace for OS/2 Toolkit
- * LAN WorkPlace for Macintosh Toolkit
- * Enhanced version of NetWare Transport Independent Remote
- Procedure Calls (TIRPC) SDK
-
- All toolkits included with the LAN WorkShop provide both
- development tools and end-user software.
-
- The LAN WorkPlace for DOS Toolkit allows you to use TCP/IP to
- build custom applications compatible with Novell's LAN
- WorkPlace for DOS v4.1. The toolkit software allows you to
- write DOS, DR-DOS, and Windows applications that use the
- Novell TCP/IP protocol stack for DOS and Windows via an
- industry-standard 4.3 BSD socket library API. Applications
- using TCP/IP gain access to a wide variety of enterprise
- computing resources, such as PCs, Macintoshes, VAX
- minicomputers, IBM mainframes, and UNIX workstations.
-
- The LAN WorkPlace for OS/2 Toolkit v3.0 provides the necessary
- tools for developing OS/2 v2.0 16-bit and 32-bit
- industry-standard 4.3 BSD socket applications that run with
- the LAN WorkPlace for OS/2 v3.0. The toolkit includes the LAN
- WorkPlace for OS/2 end-user program, a TCP/IP stack for
- building applications that access TCP/IP resources, and
- requesters for OS/2 v1.3 and v2.0. Applications you develop
- using this tookit operate with other Novell products that use
- the LAN WorkPlace for OS/2 APIs.
-
- The LAN WorkPlace for Macintosh Toolkit v1.3 allows you to
- build applications that use the APIs provided in the Novell
- TCP/IP for Macintosh (part of the LAN WorkPlace for Macintosh
- product) or the Apple Macintosh TCP. The Toolkit also provides
- the necessary development support for building HyperCard
- stacks that use TCP/IP.
-
- The last component of the LAN WorkShop is the new TIRPC SDK,
- version 1.1, which is based on the Solaris Open Network
- Computing Plus TIRPC model from SunSoft, Inc. The TIRPC
- libraries allow programs to make function calls that can be
- transported across a network using either TCP/IP or IPX,
- freeing developers from having to know the semantics of the
- underlying network.
-
-
- NetWare 4.0 Tool Bundle
-
- The NetWare 4.0 tool bundle provides all the necessary tools
- for developing client and server applications for the NetWare
- 4.0 platform. Products in this tool bundle include:
-
- * Pre-release version of the NetWare 4.0 operating system
- * NLM SDK for NetWare 4.0
- * NetWare Client SDK
- * WATCOM C/386 compiler and tools
- * LANalyzer for Windows
-
- With this bundle, you can take advantage of all the new
- features of NetWare 4.0 in your application development. These
- features include (but are not limited to) NetWare Directory
- Services (NDS), auditing, memory protection and management,
- file compression, data migration, core OS process management,
- media manager, international language enabling, NCP (NetWare
- Core Protocol) extensions, and backward compatibility with
- NetWare 3.x.
-
- The NLM SDK for NetWare 4.0 features the NLM library of APIs
- for NetWare 4.0; the NLM transport interfaces for
- multiprotocol support in NetWare 4.0; NWSHELL NLM, which
- provides DOS-like commands that can be executed on the server;
- a complete set of documentation; and support for WATCOM
- compiler v9.0 and higher.
-
- The NetWare Client SDK contains software and documentation for
- developing DOS, Windows, and OS/2 client applications for
- NetWare 2.x, 3.x, and 4.0. The C libaries provided with this
- kit have been developed as single set of source code wherever
- possible, allowing easy application migration between the
- three supported desktop platforms.
-
- The WATCOM C 32-bit Optimizing Compiler and Tools is also
- provided with the NetWare 4.0 tool bundle. Tools include a
- linker, debugger, execution profiler, utilities,
- documentation, and two libraries: the C graphics library and
- the C library. The WATCOM compiler can be used to write DOS,
- Windows, OS/2, and NetWare applications.
-
- The last component in the NetWare 4.0 Tool Bundle, LANalyzer
- for Windows, is a powerful Windows-based application for
- monitoring your network on a day-to-day basis, monitoring
- long-term network trends, analyzing specific problems, and
- capturing network packets for protocol analysis. It uses a
- "dashboard" graphical interface consisting of real-time dials
- depicting network activity. In addition, LANalyzer for Windows
- lets you print station monitor data, decoded packets, detail
- graphs, and trend graphs. LANalyzer for Windows installs on
- any network PC, runs on Ethernet cards, and supports ODI
- drivers operating in promiscuous mode.
-
-
- NetWare Management Tool Bundle
-
- The NetWare Management tool bundle provides all the software
- and documentation necessary for creating network management
- applications for NetWare. This tool bundle is based on
- Novell's open network management architecture which allows
- applications to snap into NetWare's Network Management Map
- (NMM) platform. The NetWare Management tool bundle includes:
-
- * NetWare Management System (NMS)
- * Network C for NLMs
- * LANalyzer for Windows
-
- The NetWare Management System SDK includes the NetWare
- Management Map, and a set of tools and interfaces with which
- you can create custom management modules that plug into the
- NetWare Management Map.
-
- The tools and interfaces consists of a set of Windows 3.x
- Dynamic Data Exchange (DDE) interfaces to an SNMP server and
- alarm manager, a Btrieve-based database schema, a set of
- graphical user interface (GUI) tools that let you represent
- network management indicators as graphic elements, and an
- application integrator that allows you to create new NMS menu
- items and network management objects.
-
- The second tool in this bundle is the Network C for NLMs SDK,
- which fully supports development in both the NetWare v3.1 and
- v3.11 environments. This SDK includes the NLM library of APIs,
- NLM transport interfaces, the WATCOM C/386 Optimizing Compiler
- and Tools, and the NLM Certification Kit.
-
- The final component in this bundle is LANalyzer for Windows,
- a diagnostic tool that provides a "dashboard" graphical
- interface that lets you monitor the network on a day-to-day
- basis, review long-term network trends, analyze specific
- problems, capture protocol analysis, as well as print station
- monitor data and graphs of network statistics.
-
- You must be a member of a Novell Developers' Program to purchase
- these tool bundles.
-
-
-
- *********************************************
- New NetWare Client SDK Features Single Interface
- *********************************************
-
- The NetWare Client SDK, which started shipping in January 1993,
- features a single interface for writing DOS, DR-DOS, Windows, and
- OS/2 client applications in the NetWare 2.x, 3.x, and 4.0
- environments. The C libraries provided in this kit have been
- developed as a single set of source code whenever possible,
- allowing easy application migration between the supported desktop
- platforms.
-
- This SDK includes a pre-release version of the NetWare 4.0
- operating system, the client API libraries, and an API
- documentation set. It will replace four existing Novell products:
- NetWare C Interface for DOS, NetWare OS/2 Developer's Kit, NetWare
- C Interface for Windows, and NetWare System Calls for DOS.
-
- All developer support for this SDK is provided only electronically
- through the NOVDEV forum on CompuServe. Questions can be posted to
- NOVDEV twenty-four hours a day, maximizing both domestic and
- international developers' time. Questions and answers will be
- incorporated into a Q&A database on NOVDEV that developers can
- browse at any time.
-
- If you purchased NetWare C Interface for DOS, NetWare OS/2
- Developer's Kit, NetWare C Interface for Windows, or NetWare System
- Calls for DOS before September 12, 1992, you can purchase the
- NetWare Client SDK for a special price for a limited time. If you
- purchased one of these SDKs after September 12, 1992 and can show
- proof of purchase, you can receive the NetWare Client SDK free of
- charge for a limited time.
-
- You must be a member of a Novell Developers' Program to receive
- this SDK.
-
-
-
- *********************************************
- Changes to Network Management Tools
- *********************************************
-
- With NetWare v3.11, Novell shipped version 1.0 of the SNMP (Simple
- Network Management Protocol) Agent. This release marked the
- beginning of the movement toward managing NLMs through SNMP. A new
- version of the SNMP Agent (v2.0) and set of developer tools is now
- available as a component of the NetWare Management System (NMS)
- SDK.
-
- The NMS SDK allows developers to register NLMs with the SNMP agent
- for SNMP manageability. These new SNMP Agent developer tools
- replace the NetWare Network Management Toolkit. The SNMP Agent
- tools define how developers can register an NLM and the SNMP MIB
- (Management Information Base) associated with the NLM and the SNMP
- Agent on the server. Any SNMP management station can access the
- registered NLM's MIB by using the SNMP Agent as a proxy agent for
- the developers agent. Developers benefit from the SNMP
- Agent through its mechanism of using the NetWare platform for
- network management. End users benefit since they have less to learn
- beyond NetWare and the usage of NLMs.
-
- As part of Novell's ongoing commitment to SNMP and developers
- already using the NetWare Network Management Toolkit, toolkit users
- will receive the NMS SDK as well as any future updates.
-
- You must be a member of a Novell Developers' Program to purchase
- the NetWare Management System SDK.
-
-
-
- *********************************************
- Five New Development Tools Announced
- *********************************************
-
- At NetWorld Boston, Novell announced the availability of five
- NetWare-enabled third party development tools:
-
- * Two C++ compilers
- * A FORTRAN compiler
- * A tool that facilitates application connectivity
- * A breakout switch and interface card for programming and
- debugging
-
- The new compilers include the WATCOM C++ compiler, Draiken Software
- Inc.'s INTEK C++ v2.1 32-bit compiler, and WATCOM FORTRAN 77/386
- compiler.
-
- Additional tools announced include NetWorks! Developer, a
- productivity tool that enables developers to hot link DDE-enabled
- applications over Novell's IPX without learning any new syntax or
- commands, and STOP!, a simple non-maskable interrupt generator that
- NetWare developers can use in conjunction with debuggers or user
- programs.
-
- For more information on these tools, developers should contact the
- individual third-party companies as follows:
-
- * WATCOM, Sales Department at (519) 886-3700 or (800) 265-4555
- * Draiken Software, Inc. at (503) 222-5417
- * Symbiotics, Inc. at (617) 876-3635 or (800) 989-9174
- * Alpha Logic Technologies, Inc. at (206) 644-3094
-
-
-
- *********************************************
- SMF v71 SDK Meets MHS Developer Requirements
- *********************************************
-
- The NetWare SMF v71 SDK provides everything you need to develop
- applications and gateways that provide messaging services in
- NetWare MHS environments, including access to message routing and
- messaging directory services. NetWare SMF, the native API to
- Novell's NetWare MHS product line, offers simplicity, reliability,
- and inherent multiplatform support. The SDK documents the newest
- generation messaging API and builds on earlier versions to meet
- developer needs for unlimited recipients, unlimited message size,
- expanded distribution lists, and long names with hierarchical
- mulitpart workgroups.
-
- This SDK includes one copy of the 20-mailbox version of NetWare
- Global Messaging (NGM), one copy of the 100-mailbox version of NGM,
- and the SMF v71 Programmer's Reference. The SMF v71 Programmer's
- Reference documents the messaging APIs.
-
- NetWare SMF is currently used by over 900 commercial and corporate
- developers. Over 150 commercial applications and services are
- available for an estimated 2.5 million installed MHS mailboxes.
- These messaging applications range from electronic mail and network
- fax service to workflow, scheduling, and forms processing.
-
-
-
- *********************************************
- 1993 Begins with New Novell Corporate Developers' Program
- *********************************************
-
- In response to the unique development, implementation, and
- maintenance requirements developers encounter within large
- corporations, Novell will deliver the Novell Corporate Developers'
- Program in the second quarter of 1993.
-
- This program is designed to facilitate and accelerate the
- development of distributed applications that support, exploit, and
- enhance the NetWare platform in the corporate environment. The
- program will initially be available worldwide with local
- implementations in the U.S., U.K., France, and Germany, with
- additional markets to follow.
-
- Membership in this program is available through an annual
- subscription and is targeted for large corporations developing
- industrial-strength applications on the NetWare platform for
- internal use. Members of the Novell Corporate Developers' Program
- are entitled to all the benefits available through the Novell
- Professional Developers' Program, Univel Professional Developers'
- Program with additional benefits such as project support, system
- assessment, additional products and development tools, product
- support, and education.
-
-
- Project Support
-
- Each program member is assigned an account representative who
- is familiar with the member's environment and project and who
- acts as a liaison to other groups within Novell and Univel.
- In order to better determine product focus for corporate
- developers, members are also invited to Novell and Univel
- technical forums, including executive briefings, focus groups,
- and product strategy meetings. In addition, membership in the
- Novell Corporate Developers' Program includes admission to
- BrainShare, Novell's annual technical conference.
-
-
- Novell System Assessment
-
- Members will be provided system assessment services by
- Novell's Consulting Services (NCS). Upon request and at no
- additional charge, program members will be invited to review
- their existing implementation, business and system needs,
- project priorities, goals and objectives, and timelines with
- NCS engineering staff.
-
- With the information from the program member, NCS engineers
- will use their experience and knowledge of Novell's products
- to provide a project recommendation in the form of a statement
- of work. This statement of work can be used as a roadmap by
- the program member to facilitate their own development effort
- or to enlist outside consulting services through Novell's
- consulting services group and partners.
-
-
- Development Products and Tools
-
- Members of Novell's Corporate Developers' Program are provided
- with a development copy of Novell's NetWare 2.x, 3.x, or 4.0
- or NetWare J, and a copy of UnixWare Personal Edition.
-
- Development copies of the NetWare operating systems are
- provided to members to facilitate prototyping, development,
- and testing of new applications without impacting existing
- business systems. Based on their particular development
- efforts, members may also select any ten Novell SDKs from the
- full list of available SDK products including the UnixWare SDK
- bundled with UnixWare Application Server.
-
- Program members will also receive updates to any of the Novell
- products they select through the program, ensuring that the
- application development effort for the NetWare platform is
- always with the most advanced and current technologies.
-
-
- Development Product Support
-
- Novell's Developer Support Group offers Novell Corporate
- Developers' Program members priority access to customer
- support representatives and support engineers. Support calls
- from program members will be acknowledged within four hours
- (during normal business hours). In addition, program members
- have access to an assigned technician for the duration of the
- support incident.
-
-
- Developer Education
-
- The effective transfer of Novell expertise to developers is
- vital for successful product use and for accelerating the
- application development timeline. As part of the program,
- members may attend three Novell technical education
- development classes throughout the subscription year.
-
-
- Ongoing Development Support
-
- Ongoing development support is provided to Novell Corporate
- Developers' Program members, including access to the NOVDEV
- private forum on CompuServe, the Univel Developer Bulletin
- board, admission to the Advisory Council meetings, Novell
- developer publications, and all other services offered through
- Novell developer programs.
-
-
- For More Information
-
- For additional information on development tools, developer
- support programs, and the Novell Corporate Developers'
- Program, call 1-800-NETWARE or 1-801-429-5588 (in the U.S. and
- Canada), or contact your local international Novell office.
-
-
-
- *********************************************
- *********************************************
- NOVELL DEVELOPER EDUCATION
- *********************************************
- *********************************************
-
- Novell Developer Education offers several courses for developers
- who use Novell's development & database tools, including NetWare
- SQL, Btrieve, Xtrieve PLUS, and the NetWare Client APIs.
-
-
- 904: Btrieve: An Overview
-
- This new course provides a general overview of NetWare Btrieve
- v6.x and its new features. It covers file structures,
- indexing, data integrity, record and file locking, caching,
- operating modes, segmented keys, backward compatibility and
- utilities.
-
-
- 905: Programming with Btrieve
-
- This course has been enhanced to cover all Btrieve operations
- & environments. It provides a complete introduction to
- Novell's server-based record manager. 50% of class time is
- spent in programming workshops. Working knowledge of C, BASIC,
- Pascal, or COBOL required. Prerequisite: 904: Btrieve: An
- Overview.
-
-
- 907: Xtrieve PLUS
-
- This course has been updated to include new features
- introduced with NetWare SQL v3.0. It teaches developers to use
- Xtrieve PLUS as a Btrieve or NetWare SQL programming utility.
- Trains users of Btrieve- or NetWare SQL-based database
- applications to work effectively with this menu driven
- utility.
-
-
- 911: NetWare Database Administrator
-
- This new course gives a complete, hands-on look at installing
- and configuring NetWare SQL and NetWare Btrieve. It covers the
- basics of ANSI Standard Structured Query Language (SQL),
- focusing on NetWare SQL and key database features like
- security, referential integrity (RI), database design, data
- normalization and performance.
-
-
- 912: Programming with NetWare SQL
-
- This new course is designed for developers and experienced
- network and database administrators who will be developing
- NetWare SQL applications or enhancing existing Btrieve
- applications with NetWare SQL. It provides an in-depth look
- at the functionality of NetWare SQL and discusses optimizing
- database systems for development of efficient applications
- using Novell database tools.
-
-
- 930: Developing NetWare Loadable Modules (NLMs)
-
- This course introduces C programmers to server-based
- application development in the 32-bit NetWare 3.x environment.
- It covers basic concepts for writing server-based C
- applications that access the NetWare 3.x C library (CLib).
- Requires working knowledge of the C language.
-
-
- 940: NetWare Programming: Basic Services
-
- This new lab-oriented class (40 percent lab work) introduces
- NetWare programming concepts. It covers topics such as bindery
- services, file system services, print services, queue
- management, connection and file-server services, and
- accounting and synchronization services. This class requires
- knowledge of the C programming language.
-
-
- 945: NetWare Programming: Protocol Support
-
- This new class covers protocol support features. It also
- discusses network programming concepts and techniques for
- developing client-side applications, including Service
- Advertising Protocol (SAP) IPX/SPX, diagnostics, NetBIOS, TLI,
- and Named Pipes. This class requires strong knowledge of the
- C programming language.
-
-
- To obtain information on pricing, location, scheduling, & course
- content for classes held in the US, call 1-800-233-3382,
- 1-801-429-5508 or 1-800-NETWARE. Customers outside of the US should
- call 1-801-429-5508. For information on availability, location, and
- prices of classes outside of the US, contact your local Novell
- office.
-
-
-
- *********************************************
- *********************************************
- FUN AND FACTS
- *********************************************
- *********************************************
-
- Test your developing skills with the development products by taking
- our Fun & Facts quiz. (See the end of this section for answers.)
-
- 1. What is the bandwidth of the current Token Ring technology?
-
- A. Either 4 or 8 MB/sec.
- B. Either 4 or 16 MB/sec
- C. Either 8 or 16 MB/sec.
-
- 2. The NetWare C Interface for DOS function SaveDirectoryHandle()
- can be used to save temporary directory handles.
-
- A. True
- B. False
-
- 3. What was the original name of the "Windows NT" operating
- system?
-
- A. Windows v4.0
- B. Windows II v1.0
- C. OS/2 v3.0
-
- 4. Which file does NetWare SQL v3.0 use to store the names of the
- named databases?
-
- A. NAMES.DB
- B. DBNAMES.CFG
- C. NAMEDDB.CFG
-
- 5. When a Btrieve file has a key of type Lstring, if the first
- byte is set to NULL and the rest of the bytes in the key are
- not set to NULL, Btrieve does not treat that key as a NULL
- key.
-
- A. True
- B. False
-
- 6. Event Service Routines (ESRs) are supported in the (NLM)
- environment?
-
- A. True
- B. False
-
- 7. NetWare SQL v3.0 can access Btrieve files on both local and
- network drives.
-
- A. True
- B. False
-
- *********************************************
- FUN AND FACTS ANSWERS
-
- 1. B
- 2. B
- 3. C
- 4. B
- 5. A
- 6. A
- 7. B
-
- *********************************************
-
-
-
- *********************************************
- *********************************************
- CURRENTLY SUPPORT VERSIONS OF NOVELL PRODUCTS
- *********************************************
- *********************************************
-
- Communication Products
-
- NetWare for SAA 1.2
- NetWare 3270 LAN Workstation for DOS 2.0
- NetWare 3270 LAN Workstation for Macintosh 1.0
- NetWare 3270 LAN Workstation for Windows 1.1
- NetWare Access Server (NAS) 1.2
- NetWare Asynchronous Communication Services (NACS) 3.0
-
-
- Database Products
-
- NetWare Btrieve (NLM) 5.15
- NetWare Btrieve (VAP) 5.15
- NetWare SQL (NLM) 3.00b
- NetWare SQL (VAP) 2.11
- Report Executive for DOS 4.11a
- Report Executive for OS/2 4.11a
- Xtrieve PLUS for DOS 4.11b
- Xtrieve PLUS for OS/2 4.11b
-
-
- Development Products
-
- Btrieve for DOS 5.10a
- Btrieve for OS/2 5.10
- Btrieve for Windows 5.10
- NetWare C Interface for DOS 1.2
- NetWare RPC for DOS 1.1
- NetWare RPC 386 1.1
- NetWare SQL Developer's Kit 3.00b
-
- NetWare System Calls for DOS 1.0
- NetWare System Interface Technical Overview 1.2
- Network C for DOS 2.0
- XQL for DOS 2.11
- XQL for OS/2 2.11
-
-
- Internetworking Products
-
- NetWare WAN Links 2.0
- NetWare MultiProtocol Router 2.0
-
-
- NetWare Messaging
-
- NetWare Global Messaging 1.0
- NetWare MHS Personal Ed. 1.5p
- NetWare MHS 10-User 1.5p
- NetWare MHS 50-User 1.5b
- NetWare MHS Unlimited-Users 1.5n
-
-
- NetWare Operating System Products
-
- NetWare 3.x 3.11
- NetWare 2.x 2.2
- NetWare NFS 1.2
- NetWare Runtime
- NetWare FTAM 1.2
- NetWare for Macintosh (NLM) 3.011
- NetWare Name Services
-
-
- Network Management Products
-
- LANalyzer for NetWare 1.0
- NetWare Services Manager 1.1
- LANalyzer Kit for Ethernet Networks 3.11a
- LANalyzer Kit for 4/16 Mbps
- Token Ring Networks 3.11a
- LANalyzer Kit for Ethernet & 4/16 Mbps
- Token Ring Networks 3.11a
-
-
- Software Developer's Kits
-
- Btrieve v6.0 Developer's Kit Supplement 1.0
- LAN WorkPlace for DOS Toolkit 4.0
- LAN WorkPlace for Macintosh Toolkit 1.2
- LAN WorkPlace for OS/2 Toolkit 3.0
- MacIPX 1.0a5
- NASI: Programmer Reference Manual
-
- NetWare AppleTalk Interface for NLMs 1.0
- Network C for NLMs 2.0 (e)
- NetWare C Interface for Macintosh 1.3
- NetWare C Interface for Windows 1.3
- NetWare Client SDK 1.0a
- NetWare for SAA LU6.2 Tools Feb 92
-
- NetWare Management System 1.0b
- NetWare Network Management Toolkit 1.0
- NetWare OS/2 Developer's Kit 2.0
- NetWare SMF v71 Developer's Kit 1.0
- NetWare 3270 Tools 1.6
- NetWare TIRPC for DOS and NLMs 1.0
-
- NLM SDK for NetWare 4.0 1.0a
- Palm DOS SDK 1.0
-
-
-
- *********************************************
- *********************************************
- REQUESTER VERSIONS
- *********************************************
- *********************************************
-
- NetWare Shells and Requesters
-
- DOS Shell 3.31
- IPX (DOS) 3.31
- VIPX.386 1.14
- NetWare Requester for OS/2 2.0
- NETWARE.DRV (Windows) 2.0
- VNETWARE.386 (Windows) 1.04
-
-
- NetWare SQL VAP NLM
-
- Requester for DOS 2.12a 3.00b
- Requester for OS/2 2.11 3.00b
- Req. Interface for Windows v3.0 2.13 3.00b
-
-
- NetWare Btrieve v5.15
-
- Requester for DOS 6.0b
- Requester for OS/2 6.0b
- Requester Interface for Windows v3.0 6.0c
-
-
-
- *********************************************
- *********************************************
- CONTACTING NOVELL
- *********************************************
- *********************************************
-
- To contact Developer Support, call 1-800-NETWARE
- (1-800-638-9273), or 1-801-429-5588. Be prepared to give the
- support operator your open incident reference number. Developer
- Support questions may also be sent by fax to 1-512-794-1775.
-
- Many international distributors provide technical support. Please
- contact your distributor or local Novell office (see list on back
- cover) for more information on international support options.
-
- Software patches may be obtained from Novell's NetWire forum on
- CompuServe (NOVLIB, LIB 7), or by contacting Developer Support and
- specifying the patches you need by product name.
-
- Novell database and development products can be obtained through
- Novell Authorized Resellers, or by calling 1-800-NETWARE or
- 1-801-429-5588.
-
- Software Developer's Kits (SDKs) are available only through
- Novell's Developers' Programs. Call 1-800-NETWARE, or
- 1-801-429-5588.
-
- For more information on Novell Labs' development tools, education
- classes and product certification, call 1-800-453-1267 or
- 1-801-429-5544.
-
- For more information on Novell education classes,
- call 1-800-NETWARE or 1-801-429-5588.
-
-
-
- *********************************************
- *********************************************
- ACKNOWLEDGEMENTS
- *********************************************
- *********************************************
-
- Publisher: Mad Poarch
-
- Editor: Kirk R. Humphries
-
- Design: Creative Services, Provo
-
- Contributing authors: Gaurang Amin
- Linda Anderson
- Michael Eisa
- Neda Eslami
- Jack Gumaer
- Ross Hopson
- Sudz Khawaja
- Nancy Kromar
- Matt Pinsonneault
- Bob Quinlan
- Clint McVey
- Randy Reddy
- Holly Roff
- Mike Shoemaker
- Aslam Tejani
-
- Special thanks to the Developer Support, Development, Developer
- Relations, Product Marketing, and Marketing Communications staff
- who contributed time and valuable input.
-
-
-
- *********************************************
- *********************************************
- NOVELL OFFICES
- *********************************************
- *********************************************
-
- Novell, Inc.
- Corporate Headquarters
- Brazil, India, Pakistan Sales Office
- 122 East 1700 South
- Provo, Utah 84606-6194 USA
- Tel. 1 (801) 429-7000
- FAX 1 (801) 429-3944
-
- *********************************************
-
- Novell International Headquarters
- 2180 Fortune Drive
- San Jose, CA 95131
- USA
- Tel. 1 (408) 434-2300
- FAX 1 (408) 434-8697
-
- *********************************************
-
- Novell Australia
- Level 2
- 2 Help Street
- Chatswood NSW 2067
- AUSTRALIA
- Tel. 61 (2) 413-3077
- FAX 61 (2) 413-3116
-
- *********************************************
-
- Novell Benelux
- Excelsiorlaan 13
- 1930 Zaventem
- BELGIUM
- Tel. 32 (2) 7250200
- FAX 32 (2) 7250311
-
- *********************************************
-
- Novell France
- Tour Anjou
- 33, Quai De Dion-Bouton
- 92814 Puteaux Cedex
- FRANCE
- Tel. 33 (1) 4775-0909
- FAX 33 (1) 4778-9472
-
- *********************************************
-
- Novell Germany
- Willstätter Strasse 13
- 4000 Düsseldorf 11
- GERMANY
- Tel. 49 (211) 59730
- FAX 49 (211) 5973250
-
- *********************************************
-
- Novell Hong Kong
- China Resources Bldg.
- 26 Harbour Rd. Room 4601-5
- Wanchai
- HONG KONG
- Tel. 852 8272223
- FAX 852 8276555
-
- *********************************************
-
- Novell Japan
- Toei Mishuku Bldg.3F
- 1-13-1 Mishuku
- Setagaya-ku, Tokyo 154
- JAPAN
- Tel. 81 (3) 5481-1161
- FAX 81 (3) 5481-1855
-
- *********************************************
-
- Novell Latin America
- 2180 Fortune Drive
- San Jose, CA 95131
- USA
- Tel. 1 (408) 321-1476/1477
- FAX 1 (408) 747-4940
-
- *********************************************
-
- Novell Mexico
- Insurgentes Sur
- No. 1160 P.H.
- Mexico D.F. 03100
- MEXICO
- Tel. 52 (5) 575 5998/4192
- FAX 52 (5) 559 0133
-
- *********************************************
-
- Novell Singapore
- Level 36
- Hong Leong Bldg.
- 16 Raffles Quay
- Singapore 0104
- SINGAPORE
- Tel. (65) 322-8503
- FAX (65) 321-8966
-
- *********************************************
-
- Novell Spain
- Paseo Castellana, 40bis
- 28046 Madrid
- SPAIN
- Tel. 34 (1) 577-4941
- FAX 34 (1) 577-9053
-
- *********************************************
-
- Novell Sweden
- Kottbyjatan 7
- 16475 Kista
- SWEDEN
- Tel. 46 (8) 703 2350
- FAX 46 (8) 703 9434
-
- *********************************************
-
- Novell Switzerland
- vor Ort 21
- CH-8104 Weiningen-Zurich
- SWITZERLAND
- Tel. 41 (1) 750-0504
- FAX 41 (1) 750-0957
-
- *********************************************
-
- Novell United Kingdom
- Avon House, Sweetwell Road
- Bracknell, Berkshire
- RG12 1HH
- UNITED KINGDOM
- Tel. 44 (344) 860 400
- FAX 44 (344) 860 353
-
- *********************************************
-
- Novell, the N design, NetWare, Btrieve, XQL, LAN WorkPlace and
- LANalyzer are registered trademarks; NetWare Loadable Module (NLM),
- NetWare Global Messaging, NetWare System Calls for DOS, NetWare
- Runtime, NetWare SQL, NetWare Btrieve, NetWare C Interface for DOS,
- NetWare System Interface Technical Overview, NetWare RPC, NetWare
- RPC 386, NetWare LU6.2, Report Executive, NetWare MHS, NetWare
- Asynchronous Communication Services (NACS), NetWare Management
- System, Professional Development Series, NetWare 3270 LAN
- Workstation and Xtrieve PLUS are trademarks; and NetWire and
- Professional Developers' Program are service marks of Novell, Inc.
- IBM and OS/2 are registered trademarks, and NetBIOS and SAA are
- trademarks of International Business Machines Corporation.
-
- Microsoft is a registered trademark, and Windows is a trademark of
- Microsoft Corporation.
-
- Apple, AppleTalk, HyperCard and Macintosh are registered trademarks
- of Apple Computer, Inc.
-
- CompuServe is a registered trademark of CompuServe Corporation.
-
- NFS and Solaris are registered trademarks, and SunSoft is a
- trademark of Sun Microsystems, Inc.
-
- UNIX is a trademark of UNIX Systems Laboratories, Inc., a
- subsidiary of AT&T. Univel is trademark of Univel, Inc.
-
- (c) 1993 Novell, Inc. All rights reserved.
-
- *********************************************
- Professional Development Series
- B U L L E T S
- JANUARY 1993
- END OF FILE
- *********************************************